package top.zywork.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.zywork.vo.StatisticsDayCountVO;

import java.util.Date;
import java.util.List;

/**
 * 商城相关统计统计DAO<br/>
 *
 * 创建于2019-11-16<br/>
 *
 * @author http://zywork.top 王振宇
 * @version 1.0
 */
@Repository
public interface MallStatisticsDAO {

    /**
     * 统计所有商品数
     * @return
     */
    Long countAllGoods();

    /**
     * 统计所有上架商品数
     * @return
     */
    Long countAllOnShelfGoods();

    /**
     * 统计所有商品SKU数
     * @return
     */
    Long countAllGoodsSkus();

    /**
     * 查询指定时间段内的每日商品数
     * @param beginTime
     * @param endTime
     * @return
     */
    List<StatisticsDayCountVO> countDayGoodsByTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 查询指定时间段内的总商品数
     * @param beginTime
     * @param endTime
     * @return
     */
    Long countAllGoodsByTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 统计所有订单数
     * @return
     */
    Long countAllGoodsOrder();

    /**
     * 根据订单状态统计所有订单数
     * @param orderStatus 订单状态
     * @return
     */
    Long countAllGoodsOrderByStatus(Byte orderStatus);

    /**
     * 查询指定时间段内的每日订单数
     * @param beginTime
     * @param endTime
     * @return
     */
    List<StatisticsDayCountVO> countDayGoodsOrderByTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 查询指定时间段内的总订单数
     * @param beginTime
     * @param endTime
     * @return
     */
    Long countAllGoodsOrderByTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

}
